package controllers;

import play.*;
import play.data.validation.Valid;
import play.db.jpa.Blob;
import play.libs.MimeTypes;
import play.mvc.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.*;

import models.*;

public class Formulario extends Controller {

	public static void index(Requerimento req) {
		render(req);
	}


	public static void teste(){
		render();
	}

	public static void Confirmacao(){
		render();
	}
	/**
	 * Submissão no sistema do requerimento
	 * @param req 
	 * @throws FileNotFoundException 
	 */
	public static void submit(@Valid Requerimento req, File photo) throws FileNotFoundException{

		//se os campos obrigatorios nao estiverem preenchidos
		if(validation.hasErrors()){
			params.flash(); 
			validation.keep();
			index(req);
		}
		else{	
			req.date = new Date();
			req.encerrado = 0;
			req.aprovado = 0;
			req.save();

			
			req.photoFileName = req.id + ".rar";
			req.photo = new Blob();
			req.photo.set(new FileInputStream(photo), MimeTypes.getContentType(photo.getName()));
			req.save();
		
			GeradorDeEmails a = new GeradorDeEmails();
			//envia para o aluno
			SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 
			String data = formatador.format(req.date);

			String mensagem = "Prezado "+req.aluno+", gostariamos de informar que o processo do tipo "+req.requerimento+ " requerido na data " + data +" com justificativa "+ req.justificativa +" foi encaminhado com sucesso para o colegiado.\n\n" +
			"Atenciosamente Coordenação PPGI.";

			a.enviaEmail(req.email, mensagem);

			//			GeradorDePDF ab = new GeradorDePDF();
			//			try {
			//				ab.criarPDF(req);
			//			} catch (Exception e) {
			//				// TODO Auto-generated catch block
			//				e.printStackTrace();
			//			}


			//email para o colegiado
			mensagem = "Prezado professor,\n\n por favor se conecte ao sistema do PPGI, pois existe um processo para seu julgamento. \n\n\nAtenciosamente Coordenação PPGI.";
			List<Usuario> colegiado = Usuario.findAll();
			for (Usuario usuario : colegiado) {
				a.enviaEmail(usuario.email, mensagem);
			}			

		}
		Confirmacao();

	}


	public static void addUserWithFileName(Requerimento req,File photo) throws FileNotFoundException {
		renderJSON("nome:" +req.id);
		if(validation.hasErrors()){
			params.flash(); 
			validation.keep();
			index(req);
		}
		else{        

			// final Files user = new Files();
			req.photoFileName = req.id + ".rar";
			req.photo = new Blob();
			req.photo.set(new FileInputStream(photo), MimeTypes.getContentType(photo.getName()));
			req.save();}
		//index(null);
	}
	public static void downloadUserPhoto(long id) {
		final Requerimento user = Requerimento.findById(id);
		notFoundIfNull(user);
		response.setContentTypeIfNotSet(user.photo.type());
		renderBinary(user.photo.get(), user.photoFileName);
	}


}
